package 面试经典150题.二叉树;

import common.TreeNode;

/**
 * @author tmh
 * @date 2024/6/21 22:08
 * @description
 */
public class T112路径总和 {
    public boolean hasPathSum(TreeNode root, int targetSum) {
        //判断中止条件 如果当前节点为空结点 返回false
        if (root == null) {
            return false;
        }
        //用targetSum的值减去当前节点的值
        targetSum -= root.val;
        //如果当前节点没有左右节点，并且targetSum的值为0，就返回true
        if (root.left == null && root.right == null && targetSum == 0) {
            return true;
        }
        //往左遍历
        if (root.left != null) {
            boolean left = hasPathSum(root.left, targetSum);
            //如果left的值为true，就直接返回true
            if (left) {
                return true;
            }
        }
        //往右遍历
        if (root.right != null) {
            //如果left的值为true，就直接返回true
            boolean right = hasPathSum(root.right, targetSum);
            if (right) {
                return true;
            }
        }
        return false;
    }

}
